package com.example.demo1;

import java.util.ArrayList;
import java.util.List;

/**
 * 树枝节点
 */
public class Composite extends Component {

    private List<Component> list = new ArrayList<>();

    @Override
    public void add(Component c) {
        list.add(c);
    }

    @Override
    public void remove(Component c) {
        list.remove(c);
    }

    @Override
    public Component getChild(int i) {
        return list.get(i);
    }

    @Override
    public void operation() {
        //在树枝节点中的业务方法,将递归调用其他节点中的 operation()方法
        list.forEach(component -> {
            component.operation();
        });
    }
}
